#ifndef MYVECTOR_H
#define MYVECTOR_H

#include <stddef.h> // 用于 size_t

// 动态数组结构体（不透明类型，隐藏内部实现）
typedef struct MyVector MyVector;

// 创建动态数组
MyVector *myvector_create(size_t item_size);

// 销毁动态数组
void myvector_destroy(MyVector *vec);

// 添加元素到末尾
void myvector_push_back(MyVector *vec, const void *element);

// 获取元素数量
size_t myvector_size(const MyVector *vec);

// 获取指定位置的元素指针（只读）
const void *myvector_get(const MyVector *vec, size_t index);

// 获取指定位置的元素指针（可修改）
void *myvector_at(MyVector *vec, size_t index);

// 排序（需传入比较函数）
void myvector_sort(MyVector *vec, int (*compare)(const void *, const void *));

#endif // MYVECTOR_H